home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 1999 #5 / 1999 CD 5 (black).iso / Delphi3 / install / data.z / URLMON.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-08-04  |  21.7 KB  |  438 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Run-time Library                         }
  5. {       Windows 32bit API Interface Unit                }
  6. {                                                       }
  7. {       Copyright (c) 1996,97 Borland International     }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. unit UrlMon;
  12.  
  13. interface
  14.  
  15. uses Windows, ActiveX;
  16.  
  17. const
  18.   UseUI: Boolean = True;
  19.  
  20.   BINDVERB_GET       = $00000000;       // default action
  21.   BINDVERB_POST      = $00000001;       // post verb
  22.   BINDVERB_PUT       = $00000002;       // put verb
  23.   BINDVERB_CUSTOM    = $00000003;       // custom verb
  24.  
  25.   BINDINFOF_URLENCODESTGMEDDATA   = $00000001;       // url encode the stgmed data
  26.   BINDINFOF_URLENCODEDEXTRAINFO   = $00000002;       // url encode the extra info
  27.  
  28.   // flags that describe the type of transaction that caller wants
  29.   BINDF_ASYNCHRONOUS              = $00000001;
  30.   BINDF_ASYNCSTORAGE              = $00000002;
  31.   BINDF_NOPROGRESSIVERENDERING    = $00000004;
  32.   BINDF_OFFLINEOPERATION          = $00000008;
  33.   BINDF_GETNEWESTVERSION          = $00000010;
  34.   BINDF_NOWRITECACHE              = $00000020;
  35.   BINDF_PULLDATA                  = $00000080;
  36.   BINDF_IGNORESECURITYPROBLEM     = $00000100;
  37.   BINDF_RESYNCHRONIZE             = $00000200;
  38.   BINDF_HYPERLINK                 = $00000400;
  39.   BINDF_INLINESGETNEWESTVERSION   = $10000000; //  need to remove from SDK
  40.   BINDF_INLINESRESYNCHRONIZE      = $20000000; // need to remove from SDK
  41.   BINDF_CONTAINER_NOWRITECACHE    = $40000000; // need to remove from SDK
  42.   BINDF_DONTUSECACHE   = BINDF_GETNEWESTVERSION;
  43.   BINDF_DONTPUTINCACHE = BINDF_NOWRITECACHE;
  44.   BINDF_NOCOPYDATA     = BINDF_PULLDATA;
  45.  
  46.   // Data notification flags
  47.   BSCF_FIRSTDATANOTIFICATION          = $00000001;
  48.   BSCF_INTERMEDIATEDATANOTIFICATION   = $00000002;
  49.   BSCF_LASTDATANOTIFICATION           = $00000004;
  50.  
  51.   BINDSTATUS_FINDINGRESOURCE          = 1;
  52.   BINDSTATUS_CONNECTING               = 2;
  53.   BINDSTATUS_REDIRECTING              = 3;
  54.   BINDSTATUS_BEGINDOWNLOADDATA        = 4;
  55.   BINDSTATUS_DOWNLOADINGDATA          = 5;
  56.   BINDSTATUS_ENDDOWNLOADDATA          = 6;
  57.   BINDSTATUS_BEGINDOWNLOADCOMPONENTS  = 7;
  58.   BINDSTATUS_INSTALLINGCOMPONENTS     = 8;
  59.   BINDSTATUS_ENDDOWNLOADCOMPONENTS    = 9;
  60.   BINDSTATUS_USINGCACHEDCOPY          = 10;
  61.   BINDSTATUS_SENDINGREQUEST           = 11;
  62.   BINDSTATUS_CLASSIDAVAILABLE         = 12;
  63.   BINDSTATUS_MIMETYPEAVAILABLE        = 13;
  64.   BINDSTATUS_CACHEFILENAMEAVAILABLE   = 14;
  65.  
  66.   SZ_URLCONTEXT: PWideChar = 'URL Context';
  67.   SZ_ASYNC_CALLEE: PWideChar = 'AsyncCallee';
  68.   MKSYS_URLMONIKER = 6;
  69.  
  70.   { URLMON-specific defines for UrlMkSetSessionOption() above }
  71.   URLMON_OPTION_USERAGENT     = $10000001;
  72.  
  73.   CF_NULL                     = 0;
  74.   CFSTR_MIME_NULL             = 0;
  75.   CFSTR_MIME_TEXT             = 'text/plain';
  76.   CFSTR_MIME_RICHTEXT         = 'text/richtext';
  77.   CFSTR_MIME_X_BITMAP         = 'image/x-xbitmap';
  78.   CFSTR_MIME_POSTSCRIPT       = 'application/postscript';
  79.   CFSTR_MIME_AIFF             = 'audio/aiff';
  80.   CFSTR_MIME_BASICAUDIO       = 'audio/basic';
  81.   CFSTR_MIME_WAV              = 'audio/wav';
  82.   CFSTR_MIME_X_WAV            = 'audio/x-wav';
  83.   CFSTR_MIME_GIF              = 'image/gif';
  84.   CFSTR_MIME_PJPEG            = 'image/pjpeg';
  85.   CFSTR_MIME_JPEG             = 'image/jpeg';
  86.   CFSTR_MIME_TIFF             = 'image/tiff';
  87.   CFSTR_MIME_X_PNG            = 'image/x-png';
  88.   CFSTR_MIME_BMP              = 'image/bmp';
  89.   CFSTR_MIME_X_ART            = 'image/x-jg';
  90.   CFSTR_MIME_AVI              = 'video/avi';
  91.   CFSTR_MIME_MPEG             = 'video/mpeg';
  92.   CFSTR_MIME_FRACTALS         = 'application/fractals';
  93.   CFSTR_MIME_RAWDATA          = 'application/octet-stream';
  94.   CFSTR_MIME_RAWDATASTRM      = 'application/octet-stream';
  95.   CFSTR_MIME_PDF              = 'application/pdf';
  96.   CFSTR_MIME_X_AIFF           = 'audio/x-aiff';
  97.   CFSTR_MIME_X_REALAUDIO      = 'audio/x-pn-realaudio';
  98.   CFSTR_MIME_XBM              = 'image/xbm';
  99.   CFSTR_MIME_QUICKTIME        = 'video/quicktime';
  100.   CFSTR_MIME_X_MSVIDEO        = 'video/x-msvideo';
  101.   CFSTR_MIME_X_SGI_MOVIE      = 'video/x-sgi-movie';
  102.   CFSTR_MIME_HTML             = 'text/html';
  103.  
  104.   { MessageId: MK_S_ASYNCHRONOUS                                              }
  105.   { MessageText: Operation is successful, but will complete asynchronously.   }
  106.   MK_S_ASYNCHRONOUS = $000401E8;
  107.   S_ASYNCHRONOUS    = MK_S_ASYNCHRONOUS;
  108.   E_PENDING         = $8000000A;
  109.  
  110.   { WinINet and protocol specific errors are mapped to one of the following   }
  111.   { error which are returned in IBSC::OnStopBinding                           }
  112.   INET_E_INVALID_URL               : HResult = $800C0002;
  113.   INET_E_NO_SESSION                : HResult = $800C0003;
  114.   INET_E_CANNOT_CONNECT            : HResult = $800C0004;
  115.   INET_E_RESOURCE_NOT_FOUND        : HResult = $800C0005;
  116.   INET_E_OBJECT_NOT_FOUND          : HResult = $800C0006;
  117.   INET_E_DATA_NOT_AVAILABLE        : HResult = $800C0007;
  118.   INET_E_DOWNLOAD_FAILURE          : HResult = $800C0008;
  119.   INET_E_AUTHENTICATION_REQUIRED   : HResult = $800C0009;
  120.   INET_E_NO_VALID_MEDIA            : HResult = $800C000A;
  121.   INET_E_CONNECTION_TIMEOUT        : HResult = $800C000B;
  122.   INET_E_INVALID_REQUEST           : HResult = $800C000C;
  123.   INET_E_UNKNOWN_PROTOCOL          : HResult = $800C000D;
  124.   INET_E_SECURITY_PROBLEM          : HResult = $800C000E;
  125.   INET_E_CANNOT_LOAD_DATA          : HResult = $800C000F;
  126.   INET_E_CANNOT_INSTANTIATE_OBJECT : HResult = $800C0010;
  127.   INET_E_ERROR_FIRST               : HResult = $800C0002;
  128.   INET_E_ERROR_LAST                : HResult = $800C0010;
  129.                                      // (INET_E_CANNOT_INSTANTIATE_OBJECT)
  130.  
  131.   { These are for backwards compatibility with previous URLMON versions }
  132.   { Flags for the UrlDownloadToCacheFile                                                                    }
  133.   URLOSTRM_USECACHEDCOPY_ONLY = $1;   // Only get from cache
  134.   URLOSTRM_USECACHEDCOPY      = $2;   // Get from cache if available else download
  135.   URLOSTRM_GETNEWESTVERSION   = $3;   // Get new version only. But put it in cache too
  136.  
  137.   // GUIDs for interfaces declared in this unit
  138.   IID_IPersistMoniker: TGUID = (
  139.     D1:$79eac9c9;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  140.   IID_IBindProtocol: TGUID = (
  141.     D1:$79eac9cd;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  142.   IID_IBinding: TGUID = (
  143.     D1:$79eac9c0;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  144.   IID_IBindStatusCallback: TGUID = (
  145.     D1:$79eac9c1;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  146.   IID_IAuthenticate: TGUID = (
  147.     D1:$79eac9d0;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  148.   IID_HttpNegotiate: TGUID = (
  149.     D1:$79eac9d2;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  150.   IID_IWindowForBindingUI: TGUID = (
  151.     D1:$79eac9d5;D2:$bafa;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  152.   IID_ICodeInstall: TGUID = (
  153.     D1:$79eac9d1;D2:$baf9;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  154.   IID_IWinInetInfo: TGUID = (
  155.     D1:$79eac9d6;D2:$bafa;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  156.   IID_IHttpSecurity: TGUID = (
  157.     D1:$79eac9d7;D2:$bafa;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  158.   IID_IWinInetHttpInfo: TGUID = (
  159.     D1:$79eac9d8;D2:$bafa;D3:$11ce;D4:($8c,$82,$00,$aa,$00,$4b,$a9,$0b));
  160.   IID_IBindHost: TGUID = (
  161.     D1:$fc4801a1;D2:$2ba9;D3:$11cf;D4:($a2,$29,$00,$aa,$00,$3d,$73,$52));
  162.  
  163. type
  164.   PBindInfo = ^TBindInfo;
  165.   TBindInfo = packed record
  166.     cbSize: Longint;
  167.     szExtraInfo: PWideChar;  // e.g. string added to the URL string [range byte]
  168.     stgmedData: TStgMedium;  // e.g. put or post data
  169.     grfBindInfoF: DWORD;     // e.g. how meddata should be treaded
  170.     dwBindVerb: DWORD;       // e.g. put, post, ...
  171.     szCustomVerb: PWideChar; // e.g. custom verb
  172.     cbstgmedData: Longint;   // size of data in stgmedData
  173.   end;
  174.  
  175.   PRemBindInfo = ^TRemBindInfo;
  176.   TRemBindInfo = packed record
  177.     cbSize: Cardinal;
  178.     szExtraInfo: PWideChar;
  179.     grfBindInfoF: DWORD;
  180.     dwBindVerb: DWORD;
  181.     szCustomVerb: PWideChar;
  182.     cbstgmedData: DWORD;
  183.   end;
  184.  
  185.   PRemFormatEtc = ^TRemFormatEtc;
  186.   TRemFormatEtc = packed record
  187.     cfFormat: DWORD;
  188.     ptd: DWORD;
  189.     dwAspect: DWORD;
  190.     lindex: Longint;
  191.     tymed: DWORD;
  192.   end;
  193.  
  194.   PCIP_Status = ^TCip_Status;
  195.   TCIP_Status = (CIP_DISK_FULL, CIP_ACCESS_DENIED, CIP_NEWER_VERSION_EXISTS,
  196.     CIP_OLDER_VERSION_EXISTS, CIP_NAME_CONFLICT,
  197.     CIP_TRUST_VERIFICATION_COMPONENT_MISSING,
  198.     CIP_EXE_SELF_REGISTERATION_TIMEOUT, CIP_UNSAFE_TO_ABORT, CIP_NEED_REBOOT);
  199.  
  200.   IPersistMoniker = interface
  201.     ['{79eac9c9-baf9-11ce-8c82-00aa004ba90b}']
  202.     function GetClassID(out pClassID: TCLSID): HRESULT; stdcall;
  203.     function IsDirty: HRESULT; stdcall;
  204.     function Load(fFullyAvailable: BOOL; pimkName: IMoniker; pibc: IBindCtx;
  205.       grfMode: DWORD): HResult; stdcall;
  206.     function Save(pimkName: IMoniker; pibc: IBindCtx; fRemember: BOOL): HResult; stdcall;
  207.     function SaveCompleted(pimkName: IMoniker; pibc: IBindCtx): HRESULT; stdcall;
  208.     function GetCurMoniker(out ppimkName: IMoniker): HRESULT; stdcall;
  209.   end;
  210.  
  211.   IBinding = interface
  212.     ['{79eac9c0-baf9-11ce-8c82-00aa004ba90b}']
  213.     function Abort: HResult; stdcall;
  214.     function Suspend: HResult; stdcall;
  215.     function Resume: HResult; stdcall;
  216.     function SetPriority(nPriority: Longint): HResult; stdcall;
  217.     function GetPriority(out nPriority: Longint): HResult; stdcall;
  218.     function GetBindResult(out clsidProtocol: TGUID; out dwResult: Longint;
  219.       out szResult: PWideChar; var dwReserved: Longint): HResult; stdcall;
  220.   end;
  221.  
  222.   IBindProtocol = interface
  223.     ['{79eac9cd-baf9-11ce-8c82-00aa004ba90b}']
  224.     function CreateBinding(szUrl: PWideChar; pbc: IBindCtx;
  225.       out ppb: IBinding): HResult; stdcall;
  226.   end;
  227.  
  228.   IBindStatusCallback = interface
  229.     ['{79eac9c1-baf9-11ce-8c82-00aa004ba90b}']
  230.     function OnStartBinding(dwReserved: Longint; pib: IBinding): HResult;
  231.       stdcall;
  232.     function GetPriority(out pnPriority: Longint): HResult; stdcall;
  233.     function OnLowResource(reserved: Longint): HResult; stdcall;
  234.     function OnProgress(ulProgress: Longint; ulProgressMax: Longint;
  235.       ulStatusCode: Longint; szStatusText: PWideChar): HResult; stdcall;
  236.     function OnStopBinding( hRes: HResult; szError: PWideChar ): HResult;
  237.       stdcall;
  238.     function GetBindInfo(out grfBINDF: Longint; var pbindinfo: TBindInfo):
  239.       HResult; stdcall;
  240.     function OnDataAvailable(grfBSCF: Longint; dwSize: Longint;
  241.       var pformatetc: TFormatEtc; var pstgmed: TSTGMEDIUM): HResult; stdcall;
  242.     function OnObjectAvailable(const iid: TGUID; const punk: IUnknown): HResult;
  243.       stdcall;
  244.   end;
  245.  
  246.   IAuthenticate = interface
  247.     ['{79eac9d0-baf9-11ce-8c82-00aa004ba90b}']
  248.     function Authenticate(var phwnd: HWND; pszUserName,
  249.       pszPassword: PWideChar): HRESULT; stdcall;
  250.   end;
  251.  
  252.   IHttpNegotiate = interface
  253.     ['{79eac9d2-baf9-11ce-8c82-00aa004ba90b}']
  254.     function BeginningTransaction(szURL, szHeaders: PWideChar;
  255.       dwReserved: DWORD; out pszAdditionalHeaders: PWideChar): HRESULT; stdcall;
  256.     function OnResponse(dwResponseCode: DWORD; szResponseHeaders,
  257.       szRequestHeaders: PWideChar; out pszAdditionalRequestHeaders: PWideChar):
  258.       HResult; stdcall;
  259.   end;
  260.  
  261.   IWindowForBindingUI = interface
  262.     ['{79eac9d5-bafa-11ce-8c82-00aa004ba90b}']
  263.     function GetWindow(const guidReason: TGUID; out wnd: HWND): HResult; stdcall;
  264.   end;
  265.  
  266.   ICodeInstall = interface(IWindowForBindingUI)
  267.     ['{79eac9d1-baf9-11ce-8c82-00aa004ba90b}']
  268.     function OnCodeInstallProblem(ulStatusCode: Cardinal; szDestination,
  269.       szSource: PWideChar; dwReserved: DWORD): HResult; stdcall;
  270.   end;
  271.  
  272.   IWinInetInfo = interface
  273.     ['{79eac9d6-bafa-11ce-8c82-00aa004ba90b}']
  274.     function QueryOption(dwOption: DWORD; Buffer: Pointer; var pcbBuf: DWORD): HResult; stdcall;
  275.   end;
  276.  
  277.   IHttpSecurity = interface(IWindowForBindingUI)
  278.     ['{79eac9d7-bafa-11ce-8c82-00aa004ba90b}']
  279.     function OnSecurityProblem(dwProblem: DWORD): HRESULT; stdcall;
  280.   end;
  281.  
  282.   IWinInetHttpInfo = interface(IWinInetInfo)
  283.     ['{79eac9d8-bafa-11ce-8c82-00aa004ba90b}']
  284.     function QueryInfo(dwOption: DWORD; pBuffer: Pointer; var pcbBuf, pdwFlags,
  285.       pdwReserved: DWORD): HResult; stdcall;
  286.   end;
  287.  
  288.   IBindHost = interface
  289.     ['{fc4801a1-2ba9-11cf-a229-00aa003d7352}']
  290.     function CreateMoniker(szName: PWideChar; pBC: IBindCtx; out ppmk: IMoniker;
  291.       dwReserved: DWORD): HResult; stdcall;
  292.     function MonikerBindToStorage(pMk: IMoniker; pBC: IBindCtx;
  293.       pBSC: IBindStatusCallback; const riid: TIID; out ppvObj): HResult; stdcall;
  294.     function RemoteMonikerBindToStorage(pMk: IMoniker; pBC: IBindCtx;
  295.       pBSC: IBindStatusCallback; const riid: TIID; out ppvObj: IUnknown): HResult; stdcall;
  296.     function MonikerBindToObject(pMk: IMoniker; pBC: IBindCtx;
  297.       pBSC: IBindStatusCallback; const riid: TIID; out ppvObj): HResult; stdcall;
  298.     function RemoteMonikerBindToObject(pMk: IMoniker; pBC: IBindCtx;
  299.       pBSC: IBindStatusCallback; const riid: TIID; out ppvObj: IUnknown): HResult; stdcall;
  300.   end;
  301.  
  302. function CreateURLMoniker(pMkCtx: IMoniker; szURL: PWideChar;
  303.   out ppmk: IMoniker): HResult; stdcall;
  304. function GetClassURL(szURL: PWideChar; const pClsID: TCLSID): HResult; stdcall;
  305. function CreateAsyncBindCtx(reserved: DWORD; pBSCb: IBindStatusCallback;
  306.   pEFetc: IEnumFORMATETC; out ppBC: IBindCtx): HResult;
  307. function MkParseDisplayNameEx(pbc: IBindCtx; szDisplayName: PWideChar;
  308.   var pchEaten: Cardinal; out ppmk: IMoniker): HResult; stdcall;
  309. function RegisterBindStatusCallback(pBC: IBindCtx; pBSCb: IBindStatusCallback;
  310.   out ppBSCBPrev: IBindStatusCallback; dwReserved: DWORD): HResult; stdcall;
  311. function RevokeBindStatusCallback(pBC: IBindCtx; pBSCb: IBindStatusCallback): HResult; stdcall;
  312. function GetClassFileOrMime(pBC: IBindCtx; szFilename: PWideChar; pBuffer: Pointer;
  313.   cbSize: DWORD; szMime: PWideChar; dwReserved: DWORD; out pclsid: TCLSID): HResult; stdcall;
  314. function IsValidURL(pBC: IBindCtx; szURL: PWideChar; dwReserved: DWORD): HResult; stdcall;
  315. function CoGetClassObjectFromURL(const rCLASSID: TCLSID; szCODE: PWideChar;
  316.   dwFileVersionMS: DWORD; dwFileVersionLS: DWORD; szTYPE: PWideChar;
  317.   pBindCtx: IBindCtx; dwClsContext: DWORD; pvReserved: Pointer; const riid: TIID;
  318.   out ppv): HResult; stdcall;
  319.  
  320. { helper apis }
  321. function IsAsyncMoniker(pmk: IMoniker): HResult; stdcall;
  322. function CreateURLBinding(lpszUrl: PWideChar; pbc: IBindCtx;
  323.   out ppBdg: IBinding): HResult; stdcall;
  324.  
  325. function RegisterMediaTypesW(ctypes: Cardinal; rgszTypes: PWideChar;
  326.   const rgcfTypes: TClipFormat): HResult; stdcall;
  327. function RegisterMediaTypes(ctypes: Cardinal; rgszTypes: PChar;
  328.   const rgcfTypes: TClipFormat): HResult; stdcall;
  329. function FindMediaType(rgszTypes: PChar; rgcfTypes: TClipFormat): HResult; stdcall;
  330. function CreateFormatEnumerator(cfmtetc: Cardinal; const rgfmtetc: TFormatEtc;
  331.   out ppenumfmtetc: IEnumFormatEtc): HResult; stdcall;
  332. function RegisterFormatEnumerator(pBC: IBindCtx; pEFetc: IEnumFormatEtc;
  333.   reserved: DWORD): HResult; stdcall;
  334. function RevokeFormatEnumerator(pBC: IBindCtx; pEFetc: IEnumFormatEtc): HResult; stdcall;
  335. function RegisterMediaTypeClass(pBC: IBindCtx; ctypes: Cardinal;
  336.   rgszTypes: PChar; const rgclsID: TCLSID; reserved: DWORD): HResult; stdcall;
  337. function FindMediaTypeClass(pBC: IBindCtx; szType: PChar; out pclsID: TCLSID;
  338.   reserved: DWORD): HResult; stdcall;
  339. function UrlMkSetSessionOption(dwOption: DWORD; pBuffer: Pointer;
  340.   dwBufferLength: DWORD; dwReserved: DWORD): HResult; stdcall;
  341.  
  342. function HlinkSimpleNavigateToString(szTarget, szLocation,
  343.   szTargetFrameName: PWideChar; pUnk: IUnknown; pbc: IBindCtx;
  344.   pBSCb: IBindStatusCallback; grfHLNF, dwReserved: DWORD): HResult; stdcall;
  345. function HlinkSimpleNavigateToMoniker(pmkTarget: IMoniker; szLocation,
  346.   szTargetFrameName: PWideChar; pUnk: IUnknown; pbc: IBindCtx;
  347.   pBSCb: IBindStatusCallback; grfHLNF, dwReserved: DWORD): HResult; stdcall;
  348.  
  349. function URLOpenStreamA(p1: IUnknown; p2: PAnsiChar; p3: DWORD;
  350.   p4: IBindStatusCallback): HResult; stdcall;
  351. function URLOpenStreamW(p1: IUnknown; p2: PWideChar; p3: DWORD;
  352.   p4: IBindStatusCallback): HResult; stdcall;
  353. function URLOpenStream(p1: IUnknown; p2: PChar; p3: DWORD;
  354.   p4: IBindStatusCallback): HResult; stdcall;
  355.  
  356. function URLOpenPullStreamA(p1: IUnknown; p2: PAnsiChar; p3: DWORD;
  357.   p4: IBindStatusCallback): HResult; stdcall;
  358. function URLOpenPullStreamW(p1: IUnknown; p2: PWideChar; p3: DWORD;
  359.   p4: IBindStatusCallback): HResult; stdcall;
  360. function URLOpenPullStream(p1: IUnknown; p2: PChar; p3: DWORD;
  361.   p4: IBindStatusCallback): HResult; stdcall;
  362.  
  363.  
  364. function URLDownloadToFileA(p1: IUnknown; p2: PAnsiChar; p3: PAnsiChar; p4: DWORD;
  365.   p5: IBindStatusCallback): HResult; stdcall;
  366. function URLDownloadToFileW(p1: IUnknown; p2: PWideChar; p3: PWideChar; p4: DWORD;
  367.   p5: IBindStatusCallback): HResult; stdcall;
  368. function URLDownloadToFile(p1: IUnknown; p2: PChar; p3: PChar; p4: DWORD;
  369.   p5: IBindStatusCallback): HResult; stdcall;
  370.  
  371. function URLDownloadToCacheFileA(p1: IUnknown; p2: PAnsiChar; p3: PAnsiChar;
  372.   p4: DWORD; p5: DWORD; p6: IBindStatusCallback): HResult; stdcall;
  373. function URLDownloadToCacheFileW(p1: IUnknown; p2: PWideChar; p3: PWideChar;
  374.   p4: DWORD; p5: DWORD; p6: IBindStatusCallback): HResult; stdcall;
  375. function URLDownloadToCacheFile(p1: IUnknown; p2: PChar; p3: PChar;
  376.   p4: DWORD; p5: DWORD; p6: IBindStatusCallback): HResult; stdcall;
  377.  
  378. function URLOpenBlockingStreamA(p1: IUnknown; p2: PAnsiChar; out p3: IStream;
  379.   p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;
  380. function URLOpenBlockingStreamW(p1: IUnknown; p2: PWideChar; out p3: IStream;
  381.   p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;
  382. function URLOpenBlockingStream(p1: IUnknown; p2: PChar; out p3: IStream;
  383.   p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;
  384.  
  385. function HlinkGoBack(pUnk: IUnknown): HResult; stdcall;
  386. function HlinkGoForward(pUnk: IUnknown): HResult; stdcall;
  387. function HlinkNavigateString(pUnk: IUnknown; szTarget: PWideChar): HResult; stdcall;
  388. function HlinkNavigateMoniker(pUnk: IUnknown; pmkTarget: IMoniker): HResult; stdcall;
  389.  
  390. implementation
  391.  
  392. const
  393.   UrlMonLib = 'URLMON.DLL';
  394.  
  395. function CoGetClassObjectFromURL;       external UrlMonLib name 'CoGetClassObjectFromURL';
  396. function CreateAsyncBindCtx;            external UrlMonLib name 'CreateAsyncBindCtx';
  397. function CreateFormatEnumerator;        external UrlMonLib name 'CreateFormatEnumerator';
  398. function CreateURLBinding;              external UrlMonLib name 'CreateURLBinding';
  399. function CreateURLMoniker;              external UrlMonLib name 'CreateURLMoniker';
  400. function FindMediaType;                 external UrlMonLib name 'FindMediaType';
  401. function FindMediaTypeClass;            external UrlMonLib name 'FindMediaTypeClass';
  402. function GetClassFileOrMime;            external UrlMonLib name 'GetClassFileOrMime';
  403. function GetClassURL;                   external UrlMonLib name 'GetClassURL';
  404. function HlinkGoBack;                   external UrlMonLib name 'HlinkGoBack';
  405. function HlinkGoForward;                external UrlMonLib name 'HlinkGoForward';
  406. function HlinkNavigateMoniker;          external UrlMonLib name 'HlinkNavigateMoniker';
  407. function HlinkNavigateString;           external UrlMonLib name 'HlinkNavigateString';
  408. function HlinkSimpleNavigateToMoniker;  external UrlMonLib name 'HlinkSimpleNavigateToMoniker';
  409. function HlinkSimpleNavigateToString;   external UrlMonLib name 'HlinkSimpleNavigateToString';
  410. function IsAsyncMoniker;                external UrlMonLib name 'IsAsyncMoniker';
  411. function IsValidURL;                    external UrlMonLib name 'IsValidURL';
  412. function MkParseDisplayNameEx;          external UrlMonLib name 'MkParseDisplayNameEx';
  413. function RegisterBindStatusCallback;    external UrlMonLib name 'RegisterBindStatusCallback';
  414. function RegisterFormatEnumerator;      external UrlMonLib name 'RegisterFormatEnumerator';
  415. function RegisterMediaTypeClass;        external UrlMonLib name 'RegisterMediaTypeClass';
  416. function RegisterMediaTypes;            external UrlMonLib name 'RegisterMediaTypes';
  417. function RegisterMediaTypesW;           external UrlMonLib name 'RegisterMediaTypesW';
  418. function RevokeBindStatusCallback;      external UrlMonLib name 'RevokeBindStatusCallback';
  419. function RevokeFormatEnumerator;        external UrlMonLib name 'RevokeFormatEnumerator';
  420. function URLDownloadToCacheFileA;       external UrlMonLib name 'URLDownloadToCacheFileA';
  421. function URLDownloadToCacheFileW;       external UrlMonLib name 'URLDownloadToCacheFileW';
  422. function URLDownloadToCacheFile;        external UrlMonLib name 'URLDownloadToCacheFileA';
  423. function URLDownloadToFileA;            external UrlMonLib name 'URLDownloadToFileA';
  424. function URLDownloadToFileW;            external UrlMonLib name 'URLDownloadToFileW';
  425. function URLDownloadToFile;             external UrlMonLib name 'URLDownloadToFileA';
  426. function UrlMkSetSessionOption;         external UrlMonLib name 'UrlMkSetSessionOption';
  427. function URLOpenBlockingStreamA;        external UrlMonLib name 'URLOpenBlockingStreamA';
  428. function URLOpenBlockingStreamW;        external UrlMonLib name 'URLOpenBlockingStreamW';
  429. function URLOpenBlockingStream;         external UrlMonLib name 'URLOpenBlockingStreamA';
  430. function URLOpenPullStreamA;            external UrlMonLib name 'URLOpenPullStreamA';
  431. function URLOpenPullStreamW;            external UrlMonLib name 'URLOpenPullStreamW';
  432. function URLOpenPullStream;             external UrlMonLib name 'URLOpenPullStreamA';
  433. function URLOpenStreamA;                external UrlMonLib name 'URLOpenStreamA';
  434. function URLOpenStreamW;                external UrlMonLib name 'URLOpenStreamW';
  435. function URLOpenStream;                 external UrlMonLib name 'URLOpenStreamA';
  436.  
  437. end.
  438.